package spil;
import static spil.Text.*;

import java.awt.Color;
import java.util.Scanner;

import boundaryToMatador.Car;
import boundaryToMatador.Field;

public class TUI implements iAdapter{

	Scanner scan = new Scanner(System.in);
	private GameBoard gameBoard;
	
	// Konstruktør som modtager objektet gameBoard så TUI har adgang til array af felter m.m.
	public TUI(GameBoard gameBoard) {
		this.gameBoard = gameBoard;
	}
	
	// Bruges til at printe hvad der sker når man lander på 'fieldNumber'.
	@Override
	public void setCar(int fieldNumber, String name) {
		if (fieldNumber == 1){
			System.out.println(name + SLAGTUI + fieldNumber);
		}
		else {
			System.out.println(name + SLAGTUI + fieldNumber); // Printer navn + " rykker til felt nummer " + summen af slaget.
			gameBoard.print(fieldNumber); // Udskriver det pågældendes felt titel, konsekvens og beskrivelse
		}
		if (fieldNumber == 10) // Hvis man lander på felt 10, tildeles man en ekstratur - dette printes.
    		System.out.println(EKSTRASLAG);
	}
	
	// Viser en besked til brugeren og afventer brugeren trykker Enter
	@Override
	public void showMessage(String msg) {
		System.out.println(msg);
		String n = scan.nextLine();
	}

	// Viser en besked (msg) til spilleren og scanner hans indtastning. Input returneres som en string.
	@Override
	public String getUserString(String msg) {
		System.out.println(msg);
        String n = scan.nextLine();
        return n;
	}
	
	// Gør det muligt at ændre titlen for et felt
	@Override
	public void setTitleText(int fieldNumber, String title) {
		gameBoard.setTitleText(fieldNumber, title);
	}
	
	// Gør det muligt at ændre beskrivelsen for et felt
	@Override
	public void setDescriptionText(int fieldNumber, String description) {
		gameBoard.setDescriptionText(fieldNumber, description);
	}

	//Opretter en spiller med navn, balance og farve (RBG)
	@Override
	public void addPlayer(String name, int balance, int r, int g, int b) {
		System.out.println(name + "\t:\t" + balance);	
	}
	
	// Printer spillerens navn samt initielle pointsum
	@Override
	public void addPlayer(String name, int balance) {
		System.out.println(name + "\t:\t" + balance);
	}

	// Printer spillerens navn samt nuværende pointsum
	@Override
	public void setBalance(String name, int newBalance) {
		System.out.println(name + "\t:\t" + newBalance);	
	}
	
	// Printer hvad spilleren har slået (terningernes øjne)
	@Override
	public void setDice(int faceValue1, int faceValue2) {
		System.out.println(OEJNETUI + faceValue1 + " " + faceValue2 );	
	}
	
	@Override
	public void create(String path) {
	}

	@Override
	public void create(Field[] fields) {
	}

	@Override
	public void close() {
	}

	@Override
	public int getUserInteger(String msg, int min, int max) {
		return 0;
	}

	@Override
	public int getUserInteger(String msg) {
		return 0;
	}

	@Override
	public String getUserButtonPressed(String msg, String... buttons) {
		return null;
	}

	@Override
	public String getUserSelection(String msg, String... options) {
		return null;
	}

	@Override
	public boolean getUserLeftButtonPressed(String msg, String trueButton,
			String falseButton) {
		return false;
	}

	@Override
	public void setSubText(int fieldNumber, String subText) {
	}

	@Override
	public void addPlayer(String name, int balance, Color color) {
	}

	@Override
	public void addPlayer(String name, int balance, Car car) {
	}

	@Override
	public void setDice(int faceValue1, int rotation1, int x1, int y1,
			int faceValue2, int rotation2, int x2, int y2) {
	}

	@Override
	public void setDice(int faceValue1, int x1, int y1, int faceValue2, int x2,
			int y2) {
	}

	@Override
	public void setDice(int faceValue1, int rotation1, int faceValue2,
			int rotation2) {
	}

	@Override
	public void setNextChanceCardText(String txt) {
	}

	@Override
	public void removeCar(int fieldNumber, String name) {
	}

	@Override
	public void removeAllCars(String name) {
	}

	@Override
	public void setOwner(int fieldNumber, String name) {
	}

	@Override
	public void removeOwner(int fieldNumber) {
	}

	@Override
	public void setHouses(int fieldNumber, int houseCount) {
	}

	@Override
	public void setHotel(int fieldNumber, boolean hasHotel) {
	}
}
